#!/bin/bash

# Nombre: cifs.inc.sh
# Autor: Luis Guillen
# Fecha: 2008-11-16
# Descipcion:
#   Esta libreria proporciona las funciones necesarias para el montaje de recursos cifs
#   Crea en /mnt/cifs el servidor/recurso a montar
#   Requiere de: base.inc.sh

# Al incluir crea el directorio raiz de cifs
ROOTCIFS=/mnt/cifs

mkdir -p $ROOTCIFS

# Recibe por parametros el servidor y el recurso
# Salida 0 si esta montado
#        1 si NO lo esta
cifsEstaMontado()
{
	if [ $# -ne 2 ]; then
		echo "cifsEstaMontado() ERROR: Debe de pasar el servidor y el recurso!!"
		exit 1
	fi
	servidor=$1
	recurso=$2

	numero=`cat /etc/mtab | grep -i "^//$servidor/$recurso " | wc -l`
	if [ $numero -eq 0 ]; then
                return 1
	else
		return 0
        fi
}

# Parametros:
# 1 -> servidor -> obligatorio
# 2 -> recurso -> obligatorio
# 3 -> usuario
# 4 -> password
# 5 -> dominio
cifsMontaRecurso()
{
	if [ $# -lt 2 ]; then
		echo "cifsMontaRecurso() ERROR: Debe de pasar el servidor y el recurso!!"
		exit 1
	fi

	servidor=$1
	recurso=$2
	if [ $# -gt 2 ]; then
		usuario=$3
		if [ $# -gt 3 ]; then
			password=$4
			if [ $# -gt 4 ]; then
				dominio=$5
			else
				dominio=""
			fi
		else
			password=""
			dominio=""
		fi
	else
		usuario=""
		password=""
		dominio=""
	fi

	cifsEstaMontado $servidor $recurso
	if [ $? -eq 0 ]; then
		escribeLog "Error, el recurso $recurso ya se encuentra montado, deberá desmontarlo."
		return 1
	fi

#        testOnline $servidor
#        if [ $? -ne 0 ]
#        then
#                escribeLog "ERROR: No se puede realizar el montaje, el servidor se encuentra Down!"
#                return 1
#        fi

	punto_montaje=${ROOTCIFS}/${servidor}/${recurso}

	mkdir -p $punto_montaje
	if [ $? -ne 0 ]; then
		escribeLog "Error durante la creación del punto de montaje!"
		return 1
	fi

	# construyo la cadena de opciones

	opciones=""
	if [ ! -z $usuario ]; then
		opciones="user=${usuario}"

#		if [ ! -z $password ]; then
			opciones="${opciones},pass=${password}"
#		fi
		if [ ! -z $dominio ]; then
			opciones="${opciones},dom=${dominio}"
		fi
	fi

	if [ ! -z $opciones ]; then
		#echo "mount.cifs //${servidor}/${recurso} $punto_montaje -o $opciones"
		mount.cifs //${servidor}/${recurso} $punto_montaje -o $opciones
	else
		#echo "mount.cifs //${servidor}/${recurso} $punto_montaje"
		mount.cifs //${servidor}/${recurso} $punto_montaje
	fi

	if [ $? -ne 0 ]; then
		escribeLog "Error durante el montaje!"
		return 1
	fi

	escribeLog "El servidor se ha montado en $punto_montaje"
	return 0
}

cifsDesmontaRecurso()
{
	if [ $# -ne 2 ]; then
		echo "cifsDesmontaRecurso() ERROR: Debe de pasar el servidor y el recurso!!"
		exit 1
	fi
	servidor=$1
	recurso=$2

	cifsEstaMontado $servidor $recurso
	if [ $? -ne 0 ]; then
		escribeLog "Error, el recurso NO se encuentra montado"
		return 1
	fi

	punto_montaje=${ROOTCIFS}/${servidor}/${recurso}

	umount $punto_montaje
	if [ $? -ne 0 ]; then
		escribeLog "Error durante el desmontaje!"
		return 1
	fi

	escribeLog "El recurso se ha desmontado de $punto_montaje"
	return 0
}
